/**
 * 
 */
package projeto.administrativo.servico.cgt;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import plataforma.crud.cgt.ServiceCrud;
import plataforma.crudestatico.cgd.DaoBase;
import projeto.administrativo.atividade.cdp.KAtividade;
import projeto.administrativo.servico.cdp.KServico;
import projeto.administrativo.servico.cdp.OrdemKServicoKAtividade;
import projeto.administrativo.servico.cgd.DaoKServico;

/**
 * @author mike
 * 
 */
@Service
public class ServiceKServico extends ServiceCrud<KServico> {

	@Autowired
	DaoKServico daoKServico;

	@Override
	public DaoBase<KServico> getNucleoDaoBase() {
		return this.daoKServico;
	}

	/**
	 * @return the daoKServico
	 */
	public DaoKServico getDaoKServico() {
		return daoKServico;
	}

	/**
	 * @param daoKServico
	 *            the daoKServico to set
	 */
	public void setDaoKServico(DaoKServico daoKServico) {
		this.daoKServico = daoKServico;
	}

	public void ordenarKAtividades(KServico kservico,
			List<KAtividade> katividades) {
		int numeroDeOrdem = 0;
		List<OrdemKServicoKAtividade> ordens = new ArrayList<OrdemKServicoKAtividade>();
		for (KAtividade katividade : katividades) {
			incluirKAtividade(kservico, katividade, numeroDeOrdem++, ordens);
		}
		kservico.setOrdens(ordens);

	}

	private void incluirKAtividade(KServico kservico, KAtividade katividade,
			int ordem, List<OrdemKServicoKAtividade> conjuntoOrdem) {
		OrdemKServicoKAtividade ordemKServicoKAtividade = getOrdemKServicoKAtividade(
				kservico, katividade);
		ordemKServicoKAtividade.setNumeroOrdem(ordem);
		conjuntoOrdem.add(ordemKServicoKAtividade);

	}

	private OrdemKServicoKAtividade getOrdemKServicoKAtividade(
			KServico kservico, KAtividade katividade) {
		for (OrdemKServicoKAtividade ordemKServicoKAtividade : kservico
				.getOrdens()) {
			if (ordemKServicoKAtividade.getkAtividade().equals(katividade)) {
				return ordemKServicoKAtividade;
			}
		}
		return new OrdemKServicoKAtividade(kservico, katividade);

	}
}
